Add a workaround for vulkan crashes
authorMatthias Clasen <mclasen@redhat.com>
Sun, 3 Sep 2017 15:57:21 +0000 (11:57 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 3 Sep 2017 15:57:21 +0000 (11:57 -0400)
I see 'out of memory' errors and crashes inside libvulkan when
creating nodes that have empty bounds and end up in the fallback
paths, like a shadow around an empty text node. Prevent this
by not creating text nodes in that case.

gtk/gskpango.c

index 5263e1c9503159d0381e04dfc56a31c901bba5cb..cb5fa76768d77c7e7867b33040a463d67bb3c0c1 100644 (file)
@@ -117,6 +117,13 @@ gsk_pango_renderer_show_text_glyphs (PangoRenderer        *renderer,
   int x_offset, y_offset;
   GskRenderNode *node;
   GdkRGBA color;
+  PangoRectangle ink_rect;
+
+  /* FIXME: vulkan fallbacks don't deal with empty nodes gracefully */
+  pango_glyph_string_extents (glyphs, font, &ink_rect, NULL);
+  pango_extents_to_pixels (&ink_rect, NULL);
+  if (ink_rect.width == 0 || ink_rect.height == 0)
+    return;
 
   gtk_snapshot_get_offset (crenderer->snapshot, &x_offset, &y_offset);